/*
 * @(#)LifeGameUserCookieHelper.java $version 2010. 3. 26
 *
 * Copyright 2010 NHN Corp. All rights Reserved. 
 * NHN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.hangame.mbl.util;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

import com.nhncorp.hancore.security.crypto.EncryptException;
import com.nhncorp.hancore.security.crypto.Encryptor;
import com.nhncorp.hancore.util.data.MapUtil;
import com.nhncorp.lucy.db.PropertyEncryptException;

/**
 * @author KR10511
 */
public class CookieHelper {
	
	// 서버 로그인 사용자 인증을 위한 쿠키 이름.
	public static final String COOKIE_LIFEGAME_NID_LDT = "CK_LFG_NID_LDT";
	public static final String COOKIE_LIFEGAME_NID = "CK_LFG_NID";
	private static Encryptor encryptor = new Encryptor();

	/**
	 * 암호화 된 쿠키 값을 복호화 하는 함수.
	 * 
	 * @param str 암호화 할 쿠키의 이름
	 * @param cookieValue 암호화 된 쿠키 값
	 * @return String 복호화 된 쿠키 값
	 * @throws EncryptException exception
	 * @throws PropertyEncryptException exception
	 */
	@SuppressWarnings("unchecked")
	public static String createValueFromCookie(String str, String cookieValue) throws EncryptException,	PropertyEncryptException {
		String value = null;

		String strCookieValue = encryptor.decrypt(cookieValue);
		Map<String, String> data = MapUtil.unpack(strCookieValue);

		value = StringUtils.defaultString(data.get(str));

		return value;
	}

	/**
	 * 쿠키로 만들 값을 암호화 하여 Cookie 값을 만드는 함수.
	 * 
	 * @param str 암호화 할 쿠키의 이름
	 * @param value 암호화 할 쿠키 값
	 * @return String 암호화 된 쿠키 값
	 * @throws EncryptException exception
	 * @throws PropertyEncryptException  exception
	 */
	public static String createCookieValueString(String str, String value) throws EncryptException,	PropertyEncryptException {
		Map<String, String> data = new HashMap<String, String>(2);
		data.put(str, value);

		String cookieValue = MapUtil.pack(data);
		cookieValue = encryptor.encrypt(cookieValue);

		return cookieValue;
	}

}
